package com.icinfo.cloud.provider.punish.api.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 线索移送单
 *
 * @author zhengqiang
 * @date 2022/08/22
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class TransferCaseDTO implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 线索移送单UID (发起的时候不传值)
     */
    private String uid;

    /**
     * 是否关联检查任务（1-是 0-否）
     */
    @NotBlank(message = "是否关联检查任务不能为空(isRelationTask")
    private String isRelationTask;

    /**
     * 任务id
     */
    private String taskId;

    /**
     * 任务编号
     */
    private String taskCode;

    /**
     * 任务名称
     */
    private String taskName;

    /**
     * 主体id
     */
    private String legalEntityId;

    /**
     * 主体code
     */
    private String legalEntityCode;

    /**
     * 主体name
     */
    private String legalEntityName;

    /**
     * 地址
     */
    private String dom;

    /**
     * 主体类型
     */
    private String legalEntityType;

    /**
     * 移交材料配置UID
     */
    @NotBlank(message = "移交材料配置UID不能为空(transferUid)")
    private String transferUid;

    /**
     * 移交材料配置名称
     */
    @NotBlank(message = "移交材料配置名称不能为空(transferName)")
    private String transferName;

    /**
     * 移交的状态 1待移送（暂存） 2移送中（待接收）3、已接收 4、已退回 
     */
    @NotBlank(message = "移交的状态 1-暂存 2立即移送")
    private String transferStatus;

    /**
     * 处罚事项CODE
     */
    private String transferListCode;

    /**
     * 处罚事项名称
     */
    private String transferListName;

    /**
     * 处罚事项ID
     */
    private String transferCatalogId;

    /**
     * 移交主题
     */
    @NotBlank(message = "移交主题不能为空")
    @Length(max = 100, message = "移交主题长度不能超过100个字")
    private String transferTheme;

    /**
     * 移交文号   (前端不需要传值，详情回显）
     */
    private String transferDocumentNum;

    /**
     * 移送文号code
     */
    private String transferDocumentCode;

    /**
     * 移送文号title
     */
    private String transferDocumentTitle;

    /**
     * 年份  (前端不需要传值，详情回显）
     */
    private String transferYear;

    /**
     * 移交机构CODE
     */
    private String transferOrgCode;

    /**
     * 移交机构名称
     */
    private String transferOrgName;

    /**
     * 1-认领处罚事项的部门 2-全部部门勾选的
     */
    @NotBlank(message = "移交机构类型不能为空 1-认领处罚事项的部门 2-全部部门勾选的")
    private String transferOrgType;

    /**
     * 移送描述
     */
    @Length(max = 100, message = "移送描述长度不能超过200个字")
    private String transferContent;

    /**
     * 办案阶段 目前没有 (前端不需要传值，详情回显）
     */
    private String transferStage;

    /**
     * 创建人id (前端不需要传值，详情回显）
     */
    private String createUserId;

    /**
     * 创建人姓名 (前端不需要传值，详情回显）
     */
    private String createUser;

    /**
     * 创建时间 (前端不需要传值，详情回显）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 创建机构编码 (前端不需要传值，详情回显）
     */
    private String createOrgCode;

    /**
     * 创建机构名称 (前端不需要传值，详情回显）
     */
    private String createOrgName;

    /**
     * 移交发起时间 (前端不需要传值，详情回显）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date transferTime;

    /**
     * 移交接受时间 (前端不需要传值，详情回显）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date receiveTime;

    /**
     * 区划编码 (前端不需要传值，详情回显）
     */
    private String areaCode;

    /**
     * 选择的异常点
     */
    private List<TransferCasePointDTO> pointList;

    /**
     * 联络人
     */
    private List<TransferCaseAgentDTO> agentList;

    /**
     * 证据材料
     */
    @Valid
    @NotEmpty(message = "证据材料数据不能为空")
    private List<TransferCaseEvidenceDTO> evidenceList;


    /**
     * 来源类型 默认0 案件移送  1（谭必靖检查） 2处罚
     */
    private String sourceType;

    /**
     * 关联的外部系统UID
     */
    private String sourceRelId;

    /**
     * 来源的名称
     */
    private String sourceName;

    /**
     * 来源状态
     */
    private String sourceStatus;

    /**
    * 来源状态中文名称
    */
    private String sourceStatusName;

    /**
     * 检查主体的ID
     */
    private String checkEntId;

    /**
     * 检查机构的ID
     */
    private String checkOrgId;

}
